home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / data / ysuty2 / ysuty2.doc < prev    next >
Text File  |  1993-07-08  |  47KB  |  1,575 lines

  1. ☆☆☆☆  YS-11 Graphic User Interface Library 2   V1.0  ☆☆☆☆
  2.                                          by YS-11
  3.  
  4.  
  5. 0.概要
  6. 1.使用方法
  7. 2.GUI関数について
  8.   GUI関数で扱う部品について
  9. 3.文字列へのポインタの配列について
  10. 4.関数の説明
  11.  簡略化EGBコールライブラリ
  12.   ◆YGB_box
  13.   ◆YGB_boxFul
  14.   ◆YGB_circle
  15.   ◆YGB_cls
  16.   ◆YGB_color
  17.   ◆YGB_fontSize
  18.   ◆YGB_frame
  19.   ◆YGB_getColor
  20.   ◆YGB_getPattern
  21.   ◆YGB_init
  22.   ◆YGB_initNoCls
  23.   ◆YGB_line
  24.   ◆YGB_linec
  25.   ◆YGB_lined
  26.   ◆YGB_polygon
  27.   ◆YGB_popCondition
  28.   ◆YGB_print
  29.   ◆YGB_pset
  30.   ◆YGB_pushCondition
  31.   ◆YGB_putPattern
  32.   ◆YGB_use12dotFont
  33.   ◆YGB_view
  34.   ◆YGB_writeMode
  35.   ◆YGB_writePage
  36.  文字列操作関数
  37.   ◆YSC_arguments
  38.   ◆YSC_lineHead
  39.   ◆YSC_lineTail
  40.   ◆YSC_swap
  41.  ファイル操作関数
  42.   ◆YSC_changeExt
  43.   ◆YSC_fsize
  44.   ◆YSC_getDosFiles
  45.   ◆YSC_makeFullPath
  46.   ◆YSC_putExt
  47.   ◆YSC_sortFiles
  48.  EUPHONY FILE 演奏用関数
  49.   ◆YEU_abort
  50.   ◆YEU_pause
  51.   ◆YEU_percent
  52.   ◆YEU_play
  53.   ◆YEU_playFlag();
  54.   ◆YEU_prepare
  55.   ◆YEU_restart
  56.  GUI関数
  57.   ◆YGU_addLateralbar
  58.   ◆YGU_addLongitudinalbar
  59.   ◆YGU_addButton
  60.   ◆YGU_addButtonSwitch
  61.   ◆YGU_addDialogue
  62.   ◆YGU_addMenu
  63.   ◆YGU_addPullDownMenu
  64.   ◆YGU_allItemsAction
  65.   ◆YGU_buttonSwitchOff
  66.   ◆YGU_buttonSwitchOn
  67.   ◆YGU_checkDoubleClick
  68.   ◆YGU_deleteAll
  69.   ◆YGU_deleteItem
  70.   ◆YGU_dispVector
  71.   ◆YGU_getButton
  72.   ◆YGU_getDialogue
  73.   ◆YGU_getMenu
  74.   ◆YGU_getPullDown
  75.   ◆YGU_getScrollBarPointer
  76.   ◆YGU_getSwitch
  77.   ◆YGU_itemSerialNumber
  78.   ◆YGU_menuBox
  79.   ◆YGU_menuLine
  80.   ◆YGU_nextItem
  81.   ◆YGU_popScreenBlock
  82.   ◆YGU_pushScreenBlock
  83.   ◆YGU_previousItem
  84.   ◆YGU_repaintDialogue
  85.   ◆YGU_resetDialogue
  86.   ◆YGU_resetScrollBar
  87.   ◆YGU_screenMode
  88.   ◆YGU_setDialoguePointer
  89.   ◆YGU_setScrollBarPointer
  90.  拡張GUIライブラリ
  91.   ◆YGU_intInput
  92.   ◆YGU_lineInput
  93.   ◆YGU_lineInputKanji
  94.   ◆YGU_fileSelect
  95.   ◆YGU_paraFileSelect
  96.  GUI/拡張GUIライブラリでの考えられるトラブルについて
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103. 0.概要
  104.   これは、先に発表した、 YSUTY.LIBでここが良かった、とかあそこが悪かった、
  105.  とか、自分で使ってみて感じた所を、大幅機能強化&修正したバージョンです。
  106.   なお、このライブラリは、High-Cに標準添付のライブラリにかぶさる形をとっ
  107.  ていますので、そんなに超高速では動きません。でも、遅くはないです。(^_^;)
  108.   また、定義ファイルを解析したり、ディレクトリにあるファイル名を拾って来
  109.  る関数も入っています。これらは、自分でしょっちゅう使っている関数で、ライ
  110.  ブラリを分けると、リンクが面倒だと思ったので入っているだけで、それらを使
  111.  わなくてもこのライブラリのメインであるGUI関数を使用することは可能です。
  112.   この関数には、その他、EGBのオペレーションを使う場合、最初の設定が多
  113.  くて面倒だし、一本の直線を引くにも配列を確保してその中に2点の情報を書き
  114.  込んで・・・・と長々と書かなくてはならず、多少わずらわしい感があります。
  115.  もちろん、これは、EGBの持つ機能を隅々まで使うためにこうなっているので
  116.  すが、まぁ、そこまでは通常は使わないだろう、ということで、大幅に簡略化し
  117.  たグラフィックの関数が入っています。
  118.   また、前回のYSUTY.LIB では、メニュー関数等は呼び出して、結果が返って来
  119.  るまで、別なことが出来ないため、メニューが表示されている時に、別なところ
  120.  をダブルクリックすると何かがおこる、といった細かいことはできませんでした
  121.  が、このYSUTY2.LIBでは、ループの先頭でメニュー等を動作させる関数を呼ぶ、
  122.  という方法で、それが可能になっています。
  123.   その他、特徴としては、ライブラリの中で、複雑なことは一切やっておりませ
  124.  んので、TBIOS.LIB の関数とかちあって誤動作したりすることはまずありません。
  125.  ただし、唯一の例外は、EGBの関数を使っている時に、GUIライブラリを呼ぶと、
  126.  返ってきた時には、ビューポート、カラー、書き込みモード等が変更されている
  127.  可能性があります(特にビューポートは要注意)。ただし、これらは、グラフィ
  128.  ックオペレーションに、このライブラリに入っているグラフィックルーチンを使
  129.  っている限りはなんの問題もありません。マウス読み取り関係さえ、MOS_rdpos
  130.  しか使ってませんので、マウスバイオスのオペレーションとのかちあいも無いと
  131.  思います。
  132.   High-Cを買ったら財布が空になったような方はどうぞ(^_^;)
  133.  
  134. <<アップデート>>
  135. 1993/02/12  フリコレ応募バージョンのつもりだった(^_^;)
  136. 1993/02/20  YGB_initの一部の画面モードの初期設定が正しく行われないバグを修正。
  137.             YGB_circleで、paintMode を設定するのを忘れてたバグを修正。
  138.             YGB_colorで、画面モードによって正しく設定されないバグを修正。
  139. 1993/02/21  ファイルセレクタのワイルドカードの処理の障害を修正
  140.             これが本当のフリコレ応募バージョン
  141.   ☆☆☆  ここでV1.0とします  ☆☆☆
  142.  
  143.  
  144. 1.使用方法
  145.   YSUTY2.LIBを使用するためには、ソースプログラムの先頭で、ヘッダファイル
  146.  YSUTY2.Hをインクルードしてください。ライブラリファイル名は、YSUTY2.LIBで
  147.  すので、リンク時に指定するのも忘れないでください。また、一部の関数では、
  148.  拡張ライブラリIに対応していて、12ドットフォントや漢字入力をすることが可
  149.  能です。それらを利用する時は、拡張ライブラリIのT_OS.LIBをリンクするのも
  150.  忘れないでください。
  151.  
  152.  
  153.  
  154.  
  155. 2.GUI関数について
  156.   GUI関数を使う場合で、その他のグラフィック描画にこのライブラリ内の関
  157.  数を使わずに、 TBIOS.LIBの関数を直接使用している場合は、GUI関数を呼ぶ
  158.  たびに、描画モード,ビューポート等が変更されますので、注意してください。
  159.  このライブラリ内のグラフィック関数のみ使用の場合は問題はありません。
  160.   これらの関数では、画面上にあるボタン、ポップアップメニュー等の部品をそ
  161.  れぞれITEM型として扱います。ITEM型は、YSUTY2.Hの中で定義されている構造体
  162.  です。
  163.   ITEM型を実際に使用する時は、ITEMリストを作ります。ITEMリストを作るには
  164.  ITEM型のポインタをひとつ用意して、先頭のITEMを登録します。メモリはライブ
  165.  ラリ側でmallocを呼び出して勝手に割り振られます。そして、そのITEMに追加す
  166.  る、という形でGUIリストを作成することができます。
  167.   なお、ITEMリストは複数存在しても構いませんが、1ループにつき、1ITEMリ
  168.  ストでなくてはなりません。
  169.   例えば、次のようにします。各関数の具体的な意味については、後の章を参照
  170.  してください。
  171.  
  172.  void Function()
  173.  {
  174.      ITEM *top;
  175.      top=YGU_addButton(NULL,304,0,16,16);   /* 先頭のアイテムだからNULL */
  176.      YGU_addButton(top,304,32,40,16);       /* 以下は、                 */
  177.      YGU_addButtonSwitch(top,304,48,40,16); /*         topに続く        */
  178.  }
  179.  
  180.   こうすると、3つのボタンが登録されます。
  181.   また、登録されたITEMは、先頭が1番で、以下、2、3・・・と通し番号が付
  182.  きます。
  183.   そして、次に、登録したITEMがユーザーから何か操作されたかどうかの判別は、
  184.  ループの先頭で、関数YGU_allItemsActionをコールすることで行います。この関
  185.  数は、 topから始まってそれに追加されていったアイテム全てに対して、マウス
  186.  でクリックされた場合等をチェックして、変化があったITEMへのポインタを返し
  187.  ます。もしも、何の変化も無かった場合は、NULLが返ってきます。
  188.   ライブラリを使用するプログラムでは、ITEMへのポインタから、直接n番目で
  189.  あるという情報を得ることは出来ませんが、関数YGU_itemSerialNumberで、番号
  190.  を得ることが出来ます。これを利用して、switch~case文で、反応があったボタ
  191.  ンに対応した動作をさせることが可能です。
  192.   注意することは、ITEMを登録した関数から抜ける場合は、必ず、YGU_deleteAll
  193.  を使って登録したITEMを消さなくてはならないということです。これを怠ると、
  194.  プログラムが最初はうまく動いているように見えますが、途中で突然動かなくな
  195.  るという悲劇が生まれる危険があります。
  196.   ITEMの動作部分の例を挙げておきます。
  197.  
  198.      int inum;
  199.      ITEM *act,*top;
  200.  
  201.      /* 登録とかなんかが入る */
  202.      top=YGU_addButton( ……
  203.  
  204.      /* ここからがメインループ。*/
  205.  
  206.      act=NULL;  /* 個人的にdo~whileが嫌いだから、ここで初期化(^_^;) */
  207.      while(act!=top)    /* topにはEXITのボタンが登録されていると仮定 */
  208.      {
  209.          act=YGU_allItemsAction(top);
  210.  
  211.          inum=YGU_itemSerialNumber(top,act); /* 意味は後の章を参照ね */
  212.          switch(inum)
  213.          {
  214.          case 1:
  215.              break;  /* EXITなんだから何もしない */
  216.          case 2:
  217.              :
  218.              :
  219.              break;  /* 2番のITEMに対応した動作 */
  220.          }
  221.      }
  222.  
  223.      YGU_deleteAll(top);
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230. GUI関数で扱う部品の説明
  231. ┏━━━━━━┯━━━━━━━┯━━━━━━┯━━━━━┯━━━━━━━━┓
  232. ┃名称        │Active条件    │動作        │表示      │初期表示        ┃
  233. ┣━━━━━━┿━━━━━━━┿━━━━━━┿━━━━━┿━━━━━━━━┫
  234. ┃ボタン      │マウスのボタン│なし        │ボタン押下│呼出し元        ┃
  235. ┃            │を放した瞬間  │            │中反転    │                ┃
  236. ┠──────┼───────┼──────┼─────┼────────┨
  237. ┃スイッチ    │マウスのボタン│On/Offが切り│Onで反転  │呼出し元        ┃
  238. ┃            │を押した瞬間  │替わる      │Offで普通 │                ┃
  239. ┠──────┼───────┼──────┼─────┼────────┨
  240. ┃PullDownMenu│マウスのボタン│プルダウンメ│メニュー  │呼出し元        ┃
  241. ┃            │を押した瞬間  │ニューを表示│表示中は  │(出てくるメニュ ┃
  242. ┃            │              │して選択    │反転      │ーはライブラリ) ┃
  243. ┠──────┼───────┼──────┼─────┼────────┨
  244. ┃メニュー    │マウスのボタン│選ばれた項目│ボタン押下│ライブラリ      ┃
  245. ┃            │を放した瞬間  │番号を構造体│時反転    │                ┃
  246. ┃            │              │にセット    │          │                ┃
  247. ┠──────┼───────┼──────┼─────┼────────┨
  248. ┃ダイアログ  │ダブルクリック│選ばれた項目│選択されて│ライブラリ      ┃
  249. ┃            │またはボタンが│に対応するフ│いる項目は│                ┃
  250. ┃            │放された瞬間  │ラグをセット│反転      │                ┃
  251. ┃            │              │            │          │                ┃
  252. ┠──────┼───────┼──────┼─────┼────────┨
  253. ┃縦ScrollBar │ボタンが押され│新カーソル位│カーソル位│ライブラリ      ┃
  254. ┠──────┤ている間      │置を構造体に│置が変化し│                ┃
  255. ┃横ScrollBar │              │セット      │た時に書換│                ┃
  256. ┃      │              │            │え        │                ┃
  257. ┗━━━━━━┷━━━━━━━┷━━━━━━┷━━━━━┷━━━━━━━━┛
  258.  
  259.  
  260.  
  261.  
  262. 3.文字列へのポインタの配列について
  263.  GUI関数等で、しばしば、文字列へのポインタの配列を扱います。具体的には、
  264.  
  265.     char *a[]={"YS11","loves","Blue Impulse.",NULL};
  266.  
  267.  という形態になります。文字列へのポインタの配列を扱う時は、必ず、最後にNULL
  268.  を付けてください。NULLが付加されていないと、暴走の原因になります。
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275. 4.関数の説明
  276. 簡略化EGBコールライブラリ
  277. ◆YGB_box
  278.     呼び出し形式
  279.      YGB_box(EGB_work,x0,y0,x1,y1);
  280.       char *EGB_work;    /* EGBワークエリア */
  281.       int x0,y0;         /* 端点座標1 */
  282.       int x1,y1;         /* 端点座標2 */
  283.  
  284.   機能
  285.    箱型を書く。ただし、中は塗りつぶされない
  286.  
  287.  
  288.  
  289.  
  290. ◆YGB_boxFul
  291.     呼び出し形式
  292.      YGB_boxFul(EGB_work,x0,y0,x1,y1);
  293.       char *EGB_work;    /* EGBワークエリア */
  294.       int x0,y0;         /* 端点座標1 */
  295.       int x1,y1;         /* 端点座標2 */
  296.  
  297.   機能
  298.    中が塗りつぶされた箱型を書く。
  299.  
  300.  
  301.  
  302.  
  303. ◆YGB_circle
  304.     呼び出し形式
  305.       YGB_circle(EGB_work,x,y,r);
  306.       char *EGB_work;    /* EGBワークエリア */
  307.       int x,y;           /* 中心座標 */
  308.       int r;             /* 半径 */
  309.  
  310.     機能
  311.       円を書きます。中は塗りつぶされません。
  312.  
  313.  
  314.  
  315.  
  316. ◆YGB_cls
  317.     呼び出し形式
  318.       YGB_cls(EGB_work);
  319.       char *EGB_work;    /* EGBワークエリア */
  320.  
  321.   機能
  322.       画面を消去します
  323.  
  324.  
  325.  
  326.  
  327. ◆YGB_color
  328.     呼び出し形式
  329.       YGB_color(EGB_work,cnum);
  330.       char *EGB_work;    /* EGBワークエリア */
  331.       int cnum;          /* 色識別番号 */
  332.  
  333.     機能
  334.       色を指定します。cnumは、画面モードにかかわらず、0~65535の通し番
  335.       号です。
  336.  
  337.  
  338.  
  339.  
  340. ◆YGB_fontSize
  341.     呼出し形式
  342.      YGB_fontSize(EGB_work,fx,fy);
  343.       char *EGB_work;     /* EGBワークエリア */
  344.       int fx,fy;          /* フォントサイズ */
  345.  
  346.     機能
  347.       フォントの大きさを指定します。拡張ライブラリIがある場合は、
  348.       YGB_use12dotFontをあらかじめ指定しておくことによって、12ドット
  349.       フォントを使用することができます。
  350.  
  351.  
  352.  
  353.  
  354. ◆YGB_frame
  355.     呼出し形式
  356.       YGB_frame(EGB_work,points);
  357.       char *EGB_work;     /* EGBワークエリア */
  358.       int *points;        /* 座標データ */
  359.              points[0]     座標数
  360.              points[1]     第1点X座標
  361.              points[2]     第1点Y座標
  362.                    :
  363.                    :
  364.  
  365.     機能
  366.       多角形を書きます。ただし、中は塗り潰されません。
  367.  
  368.  
  369.  
  370.  
  371. ◆YGB_getColor
  372.     呼出し形式
  373.       cnum=YGB_getColor(EGB_work,x,y);
  374.       char *EGB_work;     /* EGBワークエリア */
  375.       int x,y;            /* 座標 */
  376.  
  377.     戻り値
  378.       int cnum;           /* 色識別番号 */
  379.  
  380.     機能
  381.       座標x,yで示される点に表示されている色の色識別番号を得る関数です。色
  382.       識別番号は、15ビットで通知されます。
  383.  
  384.  
  385.  
  386.  
  387. ◆YGB_getPattern
  388.   呼出し形式
  389.     YGB_getPattern(EGB_work,dat,x1,y1,x2,y2);
  390.       char *EGB_work;     /* EGBワークエリア */
  391.       char *dat;          /* パターンデータ格納領域 */
  392.       int x1,y1,x2,y2;    /* 取り込み領域 */
  393.  
  394.   機能
  395.     画面に表示されているパターンデータを取り込みます。
  396.  
  397.  
  398.  
  399.  
  400. ◆YGB_init
  401.     呼出し形式
  402.       YGB_init(EGB_work,s0,s1);
  403.         char *EGB_work;     /* EGB用ワークエリア */
  404.         int s0,s1;          /* Page0画面モード,Page1画面モード */
  405.  
  406.     機能
  407.       EGBを初期化し(中でEGB_initをコールしている)、s0,s1に従って、EGBの各値
  408.       を設定します。
  409.  
  410.  
  411.  
  412.  
  413. ◆YGB_initNoCls
  414.     呼出し形式
  415.       YGB_initNoCls(EGB_work,s0,s1);
  416.         char *EGB_work;     /* EGB用ワークエリア */
  417.         int s0,s1;          /* Page0画面モード,Page1画面モード */
  418.  
  419.     機能
  420.       EGBを初期化し、s0,s1に従って、EGBの各値を設定します。ただし、画面は
  421.       クリアされません。
  422.  
  423.  
  424.  
  425.  
  426. ◆YGB_line
  427.     呼出し形式
  428.       YGB_line(EGB_work,x0,y0,x1,y1);
  429.         char *EGB_work;       /* EGB用ワークエリア */
  430.         int x0,y0,x1,y1;      /* 両端点 */
  431.  
  432.     機能
  433.       端点(x0,y0)から(x1,y1)の間に直線を描きます。
  434.  
  435.  
  436.  
  437.  
  438. ◆YGB_linec
  439.     呼出し形式
  440.       YGB_linec(EGB_work,points);
  441.         char *EGB_work;     /* EGB用ワークエリア */
  442.         int *points;        /* 座標データ */
  443.           points[0];  /* 座標数 */
  444.           points[1];  /* x1 */
  445.           points[2];  /* y1 */
  446.                 :
  447.                 :
  448.                       /* xn */
  449.                       /* yn */
  450.         
  451.     機能
  452.       座標データ(x1,y1),(x2,y2),....,(xn,yn)の間に直線を描きます。
  453.  
  454.  
  455.  
  456.  
  457. ◆YGB_lined
  458.     呼出し形式
  459.       YGB_lined(EGB_work,points);
  460.         char *EGB_work;     /* EGB用ワークエリア */
  461.         int *points;        /* 座標データ */
  462.           points[0];  /* 座標数 */
  463.           points[1];  /* x1 */
  464.           points[2];  /* y1 */
  465.                 :
  466.                 :
  467.                       /* xn */
  468.                       /* yn */
  469.         
  470.     機能
  471.       座標データ(x1,y1)-(x2,y2)間,(x3,y3)-(x4,y4)間というように、奇数番目の
  472.       点とその次の点の間に直線を描きます。
  473.  
  474.  
  475.  
  476.  
  477. ◆YGB_polygon
  478.     呼出し形式
  479.       YGB_polygon(EGB_work,points);
  480.         char *EGB_work;     /* EGB用ワークエリア */
  481.         int *points;        /* 座標データ */
  482.           points[0];  /* 座標数 */
  483.           points[1];  /* x1 */
  484.           points[2];  /* y1 */
  485.                 :
  486.                 :
  487.                       /* xn */
  488.                       /* yn */
  489.         
  490.     機能
  491.       座標データ(x1,y1),(x2,y2),.....,(xn,yn)で囲まれる多角系の中を塗りつ
  492.       ぶします。
  493.  
  494.  
  495.  
  496.  
  497. ◆YGB_popCondition
  498.     呼出し形式
  499.       YGB_popCondition(EGB_work,gc);
  500.         char *EGB_work;     /* EGB用ワークエリア */
  501.         GC *gc;             /* 退避してあった状態データ */
  502.  
  503.     機能
  504.       YGB_pushConditionで退避した色,描画モード等の状態を再設定して、退避
  505.       してあったエリアを解放します。
  506.  
  507.  
  508.  
  509.  
  510. ◆YGB_print
  511.     呼出し形式
  512.       YGB_print(EGB_work,x,y,str);
  513.         char *EGB_work;     /* EGB用ワークエリア */
  514.         int x,y;            /* 表示する画面領域の左下端の座標 */
  515.         char *str;          /* 表示する文字列 */
  516.  
  517.     機能
  518.       文字を画面に表示します。YGB_use12dotFontで12dotFontの使用が設定され
  519.       いて、かつ、フォントサイズが6×12になっている場合は、システムの12dot
  520.       Fontが使われます。
  521.  
  522.  
  523.  
  524.  
  525. ◆YGB_pset
  526.     呼出し形式
  527.       YGB_pset(EGB_work,x,y);
  528.         char *EGB_work;     /* EGB用ワークエリア */
  529.         int x,y;            /* 点をうつ座標 */
  530.  
  531.     機能
  532.       画面上に点を一つ描きます。
  533.  
  534.  
  535.  
  536.  
  537. ◆YGB_pushCondition
  538.     呼出し形式
  539.       gc=YGB_pushContidion();
  540.  
  541.     戻り値
  542.       GC *gc;               /* グラフィック描画状態保持バッファへのポインタ */
  543.  
  544.     機能
  545.       この関数が呼び出された段階での描画モード、ビューポート等の設定を保存
  546.       します。保持バッファの領域は内部でmallocを呼び出して得ています。この
  547.       関数で保存された設定は、YGB_popConditionで復帰します。
  548.  
  549.  
  550.  
  551.  
  552. ◆YGB_putPattern
  553.   呼出し形式
  554.     YGB_putPattern(EGB_work,dat,x1,y1,x2,y2);
  555.       char *EGB_work;     /* EGBワークエリア */
  556.       char *dat;          /* パターンデータ格納領域 */
  557.       int x1,y1,x2,y2;    /* 書き込み領域 */
  558.  
  559.   機能
  560.     パターンデータを画面に書き込みます。
  561.  
  562.  
  563.  
  564.  
  565. ◆YGB_use12dotFont
  566.     呼出し形式
  567.       YGB_use12dotFont();
  568.  
  569.     機能
  570.       システムの12ドットフォントの利用を可能にします。この関数が呼び出さ
  571.       れた後で、フォントのサイズを6×12に設定して、YGB_printを使って文字
  572.       を出すと、システムの12ドットフォントが使われます。なお、この関数を
  573.       利用するためには、拡張ライブラリIが必要です。
  574.  
  575.  
  576.  
  577.  
  578. ◆YGB_view
  579.     呼出し形式
  580.       YGB_view(EGB_work,x1,y1,x2,y2);
  581.         char *EGB_work;         /* EGB用ワークエリア */
  582.         int x1,y1,x2,y2;        /* ビューポート */
  583.  
  584.     機能
  585.       画面の書き込み範囲を設定します。
  586.  
  587.  
  588.  
  589.  
  590. ◆YGB_writeMode
  591.     呼出し形式
  592.       YGB_writeMode(EGB_work,mode);
  593.         char *EGB_work;         /* EGB用ワークエリア */
  594.         int mode;               /* 書き込みモード */
  595.  
  596.     機能
  597.       書き込みモードを設定します。モードには、 PSET,PRESET,OR,AND,XOR,NOT
  598.       ,MATTE,PASTEL,OPAQUEが指定できます。それぞれの意味については、High-C
  599.       付属のCライブラリV2.1リファレンスを参照してください。
  600.  
  601.  
  602.  
  603.  
  604. ◆YGB_writePage
  605.     呼出し形式
  606.       YGB_writePage(EGB_work,page);
  607.         char *EGB_work;         /* EGB用ワークエリア */
  608.         int page;               /* 書き込みページ */
  609.  
  610.     機能
  611.       書き込みページを指定します。
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. 文字列操作関数
  619. ◆YSC_arguments
  620.     呼び出し形式
  621.       argc=YSC_arguments(line,argv,n);
  622.         char *line;             /* 入力行 */
  623.         char *argv[];           /* パラメータへのポインタの配列 */
  624.         int n;                  /* argvに用意した配列の個数 */
  625.  
  626.     戻り値
  627.       int argc;                 /* 得られたパラメータの個数 */
  628.  
  629.     機能
  630.       入力行で与えられた文字列をスペースで区切られたパラメータに分解し、
  631.       その分解した各パラメータの先頭を*argv[] に格納します。例えば、文字
  632.       列lineが以下の内容だった場合の実行結果は、
  633.  
  634.       <内容>
  635.         We love "Blue Impulse" .
  636.  
  637.       <YSC_arguments実行結果>
  638.         argv[0]  We
  639.         argv[1]  love
  640.         argv[2]  Blue Impulse
  641.         argv[3]  .
  642.  
  643.       と、なります。なお、この関数実行後は、lineの中身は破壊されますので
  644.       (スペースがあった部分が0になる)注意してください。
  645.  
  646.  
  647.  
  648.  
  649. ◆YSC_lineHead
  650.     呼び出し形式
  651.       head=YSC_lineHead(line);
  652.         char *line;             /* 入力行 */
  653.  
  654.     戻り値
  655.       char *head;               /* 空白とTABをスキップした文字列の先頭位置 */
  656.  
  657.     機能
  658.       文字列lineの先頭のスペースとTAB をスキップしたポインタをheadに返しま
  659.       す。headには、メモリ領域を確保するのではなく、文字列lineの先頭から最
  660.       後尾の間のどこかを指すポインタになります。
  661.  
  662.  
  663.  
  664.  
  665. ◆YSC_lineTail
  666.     呼び出し形式
  667.       head=YSC_lineTail(line);
  668.         char *line;             /* 入力行 */
  669.  
  670.     戻り値
  671.       char *head;               /* lineと同じ値 */
  672.  
  673.     機能
  674.       入力行が指す文字列の最後尾に空白またはTABがあった場合、それをカット
  675.       します。(最後尾の空白またはTABの並びの先頭に0を書き込む)
  676.  
  677.  
  678.  
  679.  
  680. ◆YSC_swap
  681.     呼び出し形式
  682.       YSC_swapInt(int *a,int *b);
  683.       YSC_swapChar(char *a,char *b);
  684.       YSC_swapPointer(void **a,void **b);
  685.  
  686.     機能
  687.       整数値または文字またはポインタの値を交換します。なお、swapCharが交換
  688.       するのは、1文字であって、文字列ではありません。そこらのCの参考書に
  689.       必ず出ている交換関数です(^_^;)プログラム書く度にいちいち書き直すのが
  690.       面倒になったもんで(^_^;)でも、swapくらい、stdlibの中に入れてしまえば
  691.       いいと思いますよね。え、思いませんか?(^_^;)
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698. ファイル操作関数
  699. ◆YSC_changeExt
  700.     呼び出し形式
  701.       YSC_changeExt(fname,ext);
  702.         char *fname;            /* ファイル名 */
  703.         char *ext;              /* 拡張子 */
  704.  
  705.     機能
  706.       ファイル名の拡張子を変更します。拡張子が無い場合は、追加されることに
  707.       なります。従って、fnameには拡張子を入れるのに十分な余裕が必要です。
  708.  
  709.  
  710.  
  711.  
  712. ◆YSC_fsize
  713.     呼び出し形式
  714.       l=YSC_fsize(fp);
  715.         FILE *fp;               /* ファイルポインタ */
  716.  
  717.     戻り値
  718.       int l;                    /* ファイル長(バイト) */
  719.  
  720.     機能
  721.       fpで示されるファイルの長さを返します。ファイルはオープンされている必
  722.       要があります。
  723.  
  724.  
  725.  
  726.  
  727. ◆YSC_getDosFiles
  728.     呼び出し形式
  729.       n=YSC_getDosFiles(fn,sd,mx,path,wc,bf);
  730.         int mx;                 /* 得るファイル名の最大個数(fnの配列個数) */
  731.         char *path;             /* 検索するパス名(NULLならカレント) */
  732.         char *wc;               /* ワイルドカード */
  733.         char *bf;               /* ファイル名格納用の配列 */
  734.  
  735.     戻り値
  736.         int n;                  /* 得られたファイル個数 */
  737.         char *fn[];             /* ファイル名へのポインタ */
  738.         char *sd;               /* サブディレクトリフラグ */
  739.  
  740.     機能
  741.       pathが指すディレクトリを検索し、見つかったファイル名をfn[0]~にセット
  742.       します。正確には、bfの中に、ファイル名を格納して、fn[0]~には、各ファ
  743.       イル名の先頭へのポインタをセットしています。従って、bfには、mxの13倍
  744.       の大きさの配列が必要です。("????????.???\0"の13文字のmx倍)なお、fn[n]
  745.       がファイルであった場合は、sd[n]に0が、サブディレクトリであった場合、
  746.       sd[n]に1がセットされます。
  747.  
  748.  
  749.  
  750.  
  751. ◆YSC_makeFullPath
  752.     呼び出し形式
  753.       YSC_makeFullPath(full,drv,path,fname);
  754.         unsigned drv;           /* ドライブ番号 ドライブA=1 ドライブB=2… */
  755.         char *path;             /* パス */
  756.         char *fname;            /* ファイル名 */
  757.  
  758.     戻り値
  759.         char *ful;              /* フルパスファイル名 */
  760.  
  761.     機能
  762.       ドライブ番号,パス,ファイル名からフルパスのファイル名を生成し、fulに
  763.       格納します。従って、fulにはフルパスのファイル名を格納するのに十分な
  764.       大きさが必要です。
  765.  
  766.  
  767.  
  768.  
  769. ◆YSC_putExt
  770.     呼び出し形式
  771.       YSC_putExt(fname,ext);
  772.         char *ext;              /* 拡張子 */
  773.  
  774.     戻り値
  775.       char *fname;              /* ファイル名 */
  776.  
  777.     機能
  778.       ファイル名に拡張子を付加します。従って、配列fnameには十分な余裕が
  779.       なくてはなりません。拡張子が既にある場合は、何もしません。
  780.  
  781.  
  782.  
  783.  
  784. ◆YSC_sortFiles
  785.     呼び出し形式
  786.       YSC_sortFiles(fn,sd,fs);
  787.         char *fn[];             /* ファイル名へのポインタの配列 */
  788.         char *sd;               /* サブディレクトリフラグ */
  789.         int fs;                 /* ファイル個数 */
  790.  
  791.     機能
  792.       fn[0]~で示されるファイル名をABC順に並べ換えます。各パラメーターの意味
  793.       は、YSC_getDosFilesのものと同じです。YSC_getDosFilesと組み合わせて使う
  794.       ことができます。なお、並べ換えはABC順に行われますが、サブディレクトリ
  795.       を先頭に持ってきます。
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802. EUPHONY FILE 演奏用関数
  803. ◆YEU_abort
  804.     呼び出し形式
  805.       YEU_abort();
  806.  
  807.     機能
  808.       演奏を中止します。
  809.  
  810.  
  811.  
  812. ◆YEU_pause
  813.     呼び出し形式
  814.       YEU_pause();
  815.  
  816.     機能
  817.       演奏を一時停止します。
  818.  
  819.  
  820.  
  821.  
  822. ◆YEU_percent
  823.     呼び出し形式
  824.       p=YEU_percent(eupdat);
  825.         char *eupdat;           /* EUPデータへのポインタ */
  826.  
  827.     戻り値
  828.       int p;                    /* 呼出しの時点で何割演奏したか(%) */
  829.  
  830.     機能
  831.       この関数を呼び出した時点で演奏が終了した割合を%で通知します。
  832.  
  833.  
  834.  
  835.  
  836. ◆YEU_play
  837.     呼び出し形式
  838.       YEU_play(eupdat,loop);
  839.         char *eupdat;           /* EUPデータへのポインタ */
  840.         int loop;               /* 0:ループしない 1:ループする */
  841.  
  842.     機能
  843.       eupdatが指すEUPデータを演奏します。eupdat~は、EUPファイルをfread
  844.       等でバイナリリードしたバッファです。また、loopに1をセットすると、
  845.       EUPファイルの最後まで来ると先頭に戻って自動的に繰り返して演奏しま
  846.       す。
  847.  
  848.  
  849.  
  850.  
  851. ◆YEU_playFlag();
  852.     呼び出し形式
  853.       f=YEU_playFlag();
  854.  
  855.     戻り値
  856.       int f;                    /* 演奏中フラグ */
  857.  
  858.     機能
  859.       演奏中であれば、fに0以外の数が返ります。
  860.  
  861.  
  862.  
  863.  
  864. ◆YEU_prepare
  865.     呼び出し形式
  866.       YEU_prepare(eupdat,loadFMB,loadPMB);
  867.  
  868.     戻り値
  869.       char *eupdat;             /* eupデータへのポインタ */
  870.       int loadFMB;              /* FM音源音色ファイルロードフラッグ */
  871.       int loadPMB;              /* PCM音源音色ファイルロードフラッグ */
  872.  
  873.     機能
  874.       eupdatで示されるEUPデータを演奏するための設定を行います。YEU_play
  875.       を実行する前に必ず呼び出さなくてはなりません。loadFMB,loadPMBは、
  876.       設定と同時にFMBファイル/PMBファイルをロードするかどうかを指定する
  877.       ために使います。1ならばロードする、0ならばロードしない、です。
  878.       同じ音色を使っているEUPファイルを連続で演奏するような場合は0にし
  879.       た方がディスクのアクセスがなく、快適になります。
  880.  
  881.  
  882.  
  883.  
  884. ◆YEU_restart
  885.     呼び出し形式
  886.       YEU_restart();
  887.  
  888.     機能
  889.       YEU_pauseで一時停止していた演奏を再開します。
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896. GUI関数
  897. ◆YGU_addLateralbar
  898.     呼び出し形式
  899.       itm=YGU_addLateralbar(EGB_work,top,x,y,lx,ly,alln,dspn);
  900.         char *EGB_work;   /* EGB用ワークエリア */
  901.         ITEM *top;        /* ITEMリストの先頭へのポインタ(新規の場合はNULL) */
  902.         int x,y;          /* スクロールバーの左上座標 */
  903.         int lx,ly;        /* スクロールバーの幅 */
  904.         int alln;         /* スクロールバーが表す集合の全体の大きさ */
  905.         int dspn;         /* 全体のうち、表示される部分の大きさ */
  906.  
  907.     戻り値
  908.       ITEM *itm;          /* 登録されたスクロールバーへのポインタ */
  909.  
  910.     機能
  911.    横のスクロールバーをITEMリストに登録します。新たにITEMリストを作成する
  912.       場合は、ITEMリストの先頭へのポインタにNULLを指定します。なお、この関数
  913.       が登録するのは横のスクロールバーで、横の長さが縦の長さの2倍以上ないと
  914.       登録に失敗します。登録に失敗した場合は、NULLを返します。
  915.  
  916.  
  917.  
  918. ◆YGU_addLongitudinalbar
  919.     呼び出し形式
  920.       itm=YGU_addLongitudinalbar(EGB_work,top,x,y,lx,ly,allc,dspn);
  921.         char *EGB_work;   /* EGB用ワークエリア */
  922.         ITEM *top;        /* ITEMリストの先頭へのポインタ(新規の場合はNULL) */
  923.         int x,y;          /* スクロールバーの左上座標 */
  924.         int lx,ly;        /* スクロールバーの幅 */
  925.         int alln;         /* スクロールバーが表す集合の全体の大きさ */
  926.         int dspn;         /* 全体のうち、表示される部分の大きさ */
  927.  
  928.     戻り値
  929.       ITEM *itm;          /* 登録されたスクロールバーへのポインタ */
  930.  
  931.     機能
  932.    縦のスクロールバーをITEMリストに登録します。新たにITEMリストを作成する
  933.       場合は、ITEMリストの先頭へのポインタにNULLを指定します。なお、この関数
  934.       が登録するのは縦のスクロールバーで、縦の長さが横の長さの2倍以上ないと
  935.       登録に失敗します。登録に失敗した場合は、NULLを返します。
  936.  
  937.  
  938.  
  939.  
  940. ◆YGU_addButton
  941.     呼び出し形式
  942.       itm=YGU_addButton(top,x,y,lx,ly);
  943.         ITEM *top;        /* ITEMリスト先頭へのポインタ(新規の場合はNULL) */
  944.         int x,y;          /* ボタンの左上座標 */
  945.         int lx,ly;        /* ボタンの大きさ */
  946.  
  947.     戻り値
  948.         ITEM *itm;        /* 登録されたボタンへのポインタ */
  949.  
  950.     機能
  951.       ボタンをITEMリストに登録します。新たにITEMリストを作成する場合は、top
  952.       にNULLを指定します。登録に失敗した時は、itmにNULLが返ります。
  953.  
  954.  
  955.  
  956.  
  957. ◆YGU_addButtonSwitch
  958.     呼び出し形式
  959.       itm=YGU_addButtonSwitch(top,x,y,lx,ly);
  960.         ITEM *top;        /* ITEMリスト先頭へのポインタ(新規の場合はNULL) */
  961.         int x,y;          /* ボタンの左上座標 */
  962.         int lx,ly;        /* ボタンの大きさ */
  963.  
  964.     戻り値
  965.         ITEM *itm;        /* 登録されたボタンへのポインタ */
  966.  
  967.     機能
  968.       スイッチ(押されるたびにOn/Offが切り替わる部品)をITEMリストに登録します。
  969.       新たにITEMリストを作成する場合は、topにNULLを指定します。登録に失敗した
  970.       時は、NULLが返ります。
  971.  
  972.  
  973.  
  974.  
  975. ◆YGU_addDialogue
  976.     呼び出し形式
  977.       itm=YGU_addDialogue(EGB_work,top,x,y,lx,ly,a,sw,fx,fy,sg);
  978.         char *EGB_work;   /* EGB用ワークエリア */
  979.         ITEM *top;        /* ITEMリストの先頭へのポインタ(新規の場合はNULL) */
  980.         int x,y;          /* ダイアログの左上の座標 */
  981.         int lx,ly;        /* ダイアログの大きさ */
  982.         char *a[];        /* 選択項目 */
  983.         char *sw;         /* On/Off格納領域 */
  984.         int fx,fy;        /* 選択項目表示用フォントサイズ */
  985.         int sg;           /* 単一項目フラッグ */
  986.  
  987.     戻り値
  988.         ITEM *itm;
  989.  
  990.     機能
  991.       ダイアログをITEMリストに登録します。新たにITEMリストを作る場合は、top
  992.       にNULLを指定します。選択項目は、そのダイアログで選ぶ文字列の配列です。
  993.       swは、それぞれの文字列のうちのどれが選択されて、どれが選択されなかった
  994.       かを返すための配列で、選択項目の個数分の大きさが必要です。sgは、ひとつ
  995.       のみの選択か、複数項目の選択が可能かのフラッグで、1ならば単一、0なら
  996.       ば複数項目になります。単一指定されたダイアログでは、ユーザーがある一つ
  997.       の項目をマウスでクリックすると、他の項目は自動的にオフになります。また、
  998.       ダイアログでは、全体の項目数のうちの一部を画面に表示して、その中からい
  999.       くつかを選択するわけですが、画面に表示される個数は、自動的にly/fyにな
  1000.       ります。
  1001.  
  1002.  
  1003.  
  1004.  
  1005. ◆YGU_addMenu
  1006.     呼び出し形式
  1007.       itm=YGU_addMenu(EGB_work,top,x,y,lx,ly,a,fx,fy);
  1008.         char *EGB_work;   /* EGB用ワークエリア */
  1009.         ITEM *top;        /* ITEMリストの先頭へのポインタ(新規の場合はNULL) */
  1010.         int x,y;          /* メニューの左上座標 */
  1011.         int lx,ly;        /* メニュー表示の大きさ */
  1012.         char *a[];        /* 選択項目文字列へのポインタの配列 */
  1013.         int fx,fy;        /* フォントサイズ */
  1014.  
  1015.     戻り値
  1016.         ITEM *itm;        /* 登録されたITEMへのポインタ */
  1017.  
  1018.     機能
  1019.       メニューをITEMリストに登録します。ITEMリストを新規作成する場合は、top
  1020.       にNULLを指定します。
  1021.  
  1022.  
  1023.  
  1024.  
  1025. ◆YGU_addPullDownMenu
  1026.     呼び出し形式
  1027.       itm=YGU_addPullDownMenu(top,x,y,lx,ly,a,px,py,fx,fy);
  1028.         ITEM *top;        /* ITEMリストの先頭へのポインタ(新規の場合はNULL) */
  1029.         int x,y;          /* メニューの左上座標 */
  1030.         int lx,ly;        /* メニュー表示の大きさ */
  1031.         char *a[];        /* 選択項目文字列へのポインタの配列 */
  1032.         int px,py;        /* 開くメニューの左上座標 */
  1033.         int fx,fy;        /* フォントサイズ */
  1034.  
  1035.     戻り値
  1036.         ITEM *itm;        /* 登録されたITEMへのポインタ */
  1037.  
  1038.     機能
  1039.       プルダウンメニュー(ポップアップメニュー)をITEMリストに登録します。新規
  1040.       にITEMリストを作成する場合は、topにNULlを指定します。また、ポップアップ
  1041.       メニューが開く位置は、そのメニューを開くボタンの位置とは関係なくpx,pyで
  1042.       設定できます。
  1043.  
  1044.  
  1045.  
  1046.  
  1047. ◆YGU_allItemsAction
  1048.     呼び出し形式
  1049.       itm=YGU_allItemsAction(EGB_work,top);
  1050.         char *EGB_work;    /* EGB用ワークエリア */
  1051.         ITEM *top;         /* 作動させるITEMリストの先頭へのポインタ */
  1052.  
  1053.     戻り値
  1054.         ITEM *itm;         /* ユーザーの操作があったITEMへのポインタ */
  1055.  
  1056.     機能
  1057.       topで示されるITEMリストを作動させます。itmには、ユーザーがマウスで操作
  1058.       したITEMへのポインタが返りますので、これを利用して、押されたボタンや、
  1059.    プルダウンメニューを特定することができます。
  1060.  
  1061.  
  1062.  
  1063.  
  1064. ◆YGU_buttonSwitchOff
  1065.     呼び出し形式
  1066.       YGU_buttonSwitchOff(EGB_work,btn);
  1067.         char *EGB_work;     /* EGB用ワークエリア */
  1068.         ITEM *btn;          /* オフにするスイッチへのポインタ */
  1069.       
  1070.     機能
  1071.       btnで示されるスイッチをオフにします。既にオフになっていた場合や、btnが
  1072.    スイッチではなかった場合は何もしません。
  1073.  
  1074.  
  1075.  
  1076.  
  1077. ◆YGU_buttonSwitchOn
  1078.     呼び出し形式
  1079.       YGU_buttonSwitchOn
  1080.         char *EGB_work;     /* EGB用ワークエリア */
  1081.         ITEM *btn;          /* オンにするスイッチへのポインタ */
  1082.  
  1083.     機能
  1084.       btnで示されるスイッチをオンにします。既にオンになっていた場合や、btnが
  1085.    スイッチではなかった場合は何もしません。
  1086.  
  1087.  
  1088.  
  1089.  
  1090. ◆YGU_checkDoubleClick
  1091.     呼び出し形式
  1092.       dc=YGU_checkDoubleClick();
  1093.  
  1094.     戻り値
  1095.       int dc;               /* ダブルクリックフラッグ */
  1096.  
  1097.     機能
  1098.       ダブルクリックがあったかどうかをチェックします。直前のYGU_allItemsAction
  1099.       にもとづいて判定しているため、ループの先頭でYGU_allItemsActionを呼びだ
  1100.       していない部分では使用することは不可能です。
  1101.  
  1102.  
  1103.  
  1104.  
  1105. ◆YGU_deleteAll
  1106.     呼び出し形式
  1107.       YGU_deleteAll(top);
  1108.         ITEM *top;          /* 削除するITEMリストの先頭へのポインタ */
  1109.  
  1110.     機能
  1111.       ITEMリストを削除して、使用していたメモリ領域を解放します。関数の中で
  1112.    ITEMリストを作成していた場合は、関数を抜ける前に必ずこの関数で作成し
  1113.    たITEMリストを削除しなくてはなりません。
  1114.  
  1115.  
  1116.  
  1117.  
  1118. ◆YGU_deleteItem
  1119.     呼び出し形式
  1120.       YGU_deleteItem(itm);
  1121.         ITEM *itm;          /* 削除するITEMへのポインタ */
  1122.  
  1123.     機能
  1124.       itmで示されるITEMを削除します。それが属するITEMリストでは、itmで示され
  1125.       るITEMが詰まることになります。
  1126.  
  1127.  
  1128.  
  1129.  
  1130. ◆YGU_dispVector
  1131.     呼び出し形式
  1132.       YGU_dispVector(EGB_work,x,y,siz,ang);
  1133.         char *EGB_work;    /* EGB用ワークエリア */
  1134.         int x,y;           /* 矢印の左上座標 */
  1135.         int siz;           /* 矢印の大きさ */
  1136.         int ang;           /* 矢印の角度 */
  1137.  
  1138.     機能
  1139.       1辺がsizドットの箱型を書いて、その中に矢印を描きます。angには、0/90/180/
  1140.       270が指定できます。0の時に上向きで、以下時計回りです。
  1141.  
  1142.  
  1143.  
  1144.  
  1145. ◆YGU_getButton
  1146.     呼び出し形式
  1147.       on=YGU_getButton(btn);
  1148.         ITEM *btn;        /* オンオフを求めるボタンへのポインタ */
  1149.  
  1150.     戻り値
  1151.       int on;             /* ボタン状態 0:Off 1:On */
  1152.  
  1153.     機能
  1154.       btnで示されるボタンの状態を調べます。これは、関数ではなく、#defineで
  1155.       定義されているため、#include <ysuty2.h> がソースの先頭に書かれていな
  1156.       い場合は使用できません。
  1157.  
  1158.  
  1159.  
  1160.  
  1161. ◆YGU_getDialogue
  1162.     呼び出し形式
  1163.       n=YGU_getDialogue(dlg);
  1164.         ITEM *dlg;        /* 調べるダイアログへのポインタ */
  1165.  
  1166.     戻り値
  1167.       int n;              /* 直前に変化のあった項目番号 */
  1168.  
  1169.     機能
  1170.       dlgが指すダイアログで最後に選択された項目の番号を得ます。もしも、何も
  1171.    操作されていなければ0を返します。項目の一番先頭が選ばれた場合が1で
  1172.    す。これは、#defineで定義されているため、#include <ysuty2.h> がソース
  1173.    の先頭に書かれていない場合は使用できません。
  1174.  
  1175.  
  1176.  
  1177.  
  1178. ◆YGU_getMenu
  1179.     呼び出し形式
  1180.       n=YGU_getMenu(mnu);
  1181.         ITEM *mnu;          /* 調べるメニューへのポインタ */
  1182.  
  1183.     戻り値
  1184.       int n;                /* 直前に選ばれた項目番号 */
  1185.  
  1186.     機能
  1187.       mnuが指すメニューで最後に選択された項目の番号を得ます。もし、何も操作
  1188.    されていなければ0を返します。項目の一番先頭が選ばれた場合が1です。
  1189.    これは、#defineで定義されているため、#include <ysuty2.h> がソースの先
  1190.    頭に書かれていない場合は使用できません。
  1191.  
  1192.  
  1193.  
  1194. ◆YGU_getPullDown
  1195.     呼び出し形式
  1196.       n=YGU_getPullDown(pdm);
  1197.         ITEM *pdm;           /* 調べるプルダウンメニューへのポインタ */
  1198.  
  1199.     戻り値
  1200.         int n;               /* 直前に選ばれた項目番号 */
  1201.  
  1202.     機能
  1203.       pdmが指すプルダウンメニューで直前に選ばれた項目番号を返します。何も操
  1204.       作が無かった場合は、0を返します。項目の一番先頭が選ばれていた場合は、
  1205.       1を返します。
  1206.  
  1207.  
  1208.  
  1209. ◆YGU_getScrollBarPointer
  1210.     呼び出し形式
  1211.       ptr=YGU_getScrollBarPointer(bar);
  1212.         ITEM *bar;           /* 調べるスクロールバーへのポインタ */
  1213.  
  1214.     戻り値
  1215.         int ptr;             /* スクロールバーの位置 */
  1216.  
  1217.     機能
  1218.    barが指すスクロールバーの位置を返します。縦スクロールバーでも、横スク
  1219.    ロールバーでも構いません。なお、これは、#defineで定義されているので、
  1220.    ソースリストの先頭に、#include <ysuty2.h>を書いていないと使えません。
  1221.  
  1222.  
  1223.  
  1224.  
  1225. ◆YGU_getSwitch
  1226.     呼び出し形式
  1227.       on=YGU_getSwitch(swt);
  1228.         ITEM *swt;          /* 調べるスイッチへのポインタ */
  1229.  
  1230.     戻り値
  1231.         int on;             /* ボタン状態 0:Off 1:On */
  1232.  
  1233.     機能
  1234.    スイッチの状態を調べます。なお、これは、#defineで定義されているので、
  1235.       ソースリストの先頭に#include <ysuty2.h> を書いていないと使えません。
  1236.  
  1237.  
  1238.  
  1239.  
  1240. ◆YGU_itemSerialNumber
  1241.     呼び出し形式
  1242.       n=YGU_itemSerialNumber(top,itm);
  1243.         ITEM *top;        /* itmが属するITEMリストの先頭 */
  1244.         ITEM *itm;        /* 番号を調べるITEM */
  1245.  
  1246.     戻り値
  1247.       int n;              /* itmの通し番号 */
  1248.  
  1249.     機能
  1250.       itmがITEMリスト中で何番目のアイテムであるかを調べます。もしも、itmが
  1251.       リスト中に含まれていなければ0番を返します。itmがリスト中の先頭のITEM
  1252.       であった場合は、1が返ります。
  1253.  
  1254.  
  1255.  
  1256.  
  1257. ◆YGU_menuBox
  1258.     呼び出し形式
  1259.       YGU_menuBox(EGB_work,x1,y1,x2,y2);
  1260.         char *EGB_work;   /* EGB用ワークエリア */
  1261.         int x1,y1,x2,y2;  /* 箱型の左上座標,右下座標 */
  1262.  
  1263.     機能
  1264.       縁取りされた箱型を描きます。
  1265.  
  1266.  
  1267.  
  1268.  
  1269. ◆YGU_menuLine
  1270.     呼び出し形式
  1271.       YGU_menuLine(EGB_work,msg,x,y,lx,ly,fx,fy);
  1272.         char *EGB_work;     /* EGB用ワークエリア */
  1273.         char *msg;          /* 表示するメッセージ */
  1274.         int x,y;            /* 表示する領域の左上座標 */
  1275.         int lx,ly;          /* 表示する領域の大きさ */
  1276.         int fx,fy;          /* フォントサイズ */
  1277.  
  1278.     機能
  1279.       縁取りされた箱型を書いて、その中に文字列msgを描きます。
  1280.  
  1281.  
  1282.  
  1283.  
  1284. ◆YGU_nextItem
  1285.     呼び出し形式
  1286.       nxt=YGU_nextItem(itm);
  1287.         ITEM *itm;         /* 元になるアイテム */
  1288.  
  1289.     戻り値
  1290.       ITEM *nxt;           /* リスト中でitmの次にあるITEM */
  1291.  
  1292.     機能
  1293.       アイテムリスト中で、itmに続くITEMを求めます。これは、#defineで定義され
  1294.       ているため、ysuty2.hをソースリストの先頭でインクルードしていないと、使
  1295.       用できません。
  1296.  
  1297.  
  1298.  
  1299.  
  1300. ◆YGU_popScreenBlock
  1301.     呼び出し形式
  1302.       YGU_popScreenBlock(EGB_work,pushBuf);
  1303.         char *EGB_work;      /* EGB用ワークエリア */
  1304.         char *pushBuf;       /* 画面を退避してあるバッファ */
  1305.  
  1306.     機能
  1307.       YGU_pushScreenBlockで退避した画面領域を復元します。
  1308.  
  1309.  
  1310.  
  1311.  
  1312. ◆YGU_pushScreenBlock
  1313.     呼び出し形式
  1314.       pushBuf=YGU_pushScreenBlock(EGB_work,x,y,lx,ly);
  1315.         char *EGB_work;      /* EGB用ワークエリア */
  1316.         int x,y;             /* 退避する領域の左上座標 */
  1317.         int lx,ly;           /* 退避する領域の大きさ */
  1318.  
  1319.     戻り値
  1320.       char *pushBuf;         /* 画面を退避してあるバッファ */
  1321.  
  1322.     機能
  1323.       画面領域を退避して、退避した情報へのポインタを返します。メモリは内部
  1324.       でmallocで確保しています。退避した画面領域は、YGU_popScreenBlockで復
  1325.       元されます。
  1326.  
  1327.  
  1328.  
  1329.  
  1330. ◆YGU_previousItem
  1331.     呼び出し形式
  1332.       prv=YGU_previousItem(itm);
  1333.         ITEM *itm;           /* 元になるアイテムへのポインタ */
  1334.  
  1335.     戻り値
  1336.         ITEM *prv;           /* リスト中でitmの直前にあるITEMへのポインタ */
  1337.  
  1338.     機能
  1339.       ITEMリスト中で、itmの直前のITEMへのポインタを返します。これは、#define
  1340.       で定義されているため、ソースの先頭に、#include <ysuty2.h> が書かれてい
  1341.       ない場合は使用できません。
  1342.  
  1343.  
  1344.  
  1345.  
  1346. ◆YGU_repaintDialogue
  1347.     呼び出し形式
  1348.       YGU_repaintDialogue(EGB_work,dlg);
  1349.         char *EGB_work;     /* EGB用ワークエリア */
  1350.         ITEM *dlg;          /* 書換えるダイアログへのポインタ */
  1351.  
  1352.     機能
  1353.       画面の書換え等でダイアログの表示が崩れた場合等に、ダイアログを書き直
  1354.       します。このライブラリを通常の使用状態で使っている時には必要ありませ
  1355.       ん。
  1356.  
  1357.  
  1358.  
  1359.  
  1360. ◆YGU_resetDialogue
  1361.     呼び出し形式
  1362.       YGU_resetDialogue(EGB_work,dlg,a,sw);
  1363.         char *EGB_work;   /* EGB用ワークエリア */
  1364.         ITEM *dlg;        /* 値を最設定するダイアログへのポインタ */
  1365.         char *a[];        /* 選択項目 */
  1366.         char *sw;         /* On/Off格納領域 */
  1367.  
  1368.     機能
  1369.       ダイアログの選択項目を再設定して、書き直します。
  1370.  
  1371.  
  1372.  
  1373.  
  1374. ◆YGU_resetScrollBar
  1375.     呼び出し形式
  1376.       YGU_resetScrollBar(EGB_work,bar,int alln,int dspn);
  1377.         char *EGB_work;   /* EGB用ワークエリア */
  1378.         ITEM *bar;        /* 再設定するスクロールバーへのポインタ */
  1379.         int alln;         /* スクロールバーが表す集合の全体の大きさ */
  1380.         int dspn;         /* 全体のうち、表示される部分の大きさ */
  1381.  
  1382.     機能
  1383.       スクロールバーのパラメーターを再設定して、書き直します。
  1384.  
  1385.  
  1386.  
  1387.  
  1388. ◆YGU_screenMode
  1389.     呼び出し形式
  1390.       s=YGU_screenMode(EGB_work);
  1391.         char *EGB_work;   /* EGB用ワークエリア */
  1392.  
  1393.     戻り値
  1394.       int s;              /* 現在の書き込みページのスクリーンモード */
  1395.  
  1396.     機能
  1397.    この関数が呼ばれた時点の書き込みページのスクリーンモードを返します。
  1398.  
  1399.  
  1400.  
  1401.  
  1402. ◆YGU_setDialoguePointer
  1403.     呼び出し形式
  1404.       YGU_setDialoguePointer(EGB_work,dlg,newptr);
  1405.         char *EGB_work;   /* EGB用ワークエリア */
  1406.         ITEM *dlg;        /* 変更するダイアログへのポインタ */
  1407.         int newptr;       /* 再設定する値 */
  1408.  
  1409.     機能
  1410.       ダイアログの選択項目のうちのどこからを画面に表示するかを変更します。
  1411.       スクロールバーと連動させる時などに使います。
  1412.  
  1413.  
  1414.  
  1415.  
  1416. ◆YGU_setScrollBarPointer
  1417.     呼び出し形式
  1418.       YGU_setScrollBarPointer(EGB_work,bar,newptr);
  1419.         char *EGB_work;   /* EGB用ワークエリア */
  1420.         ITEM *bar;        /* 変更するスクロールバーへのポインタ */
  1421.         int newptr;       /* 再設定する値 */
  1422.  
  1423.     機能
  1424.    スクロールバーのカーソル位置を変更します。普通にこのライブラリを使っ
  1425.    ている分にはこの関数は必要ありません。
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432. 拡張GUIライブラリ
  1433. ◆YGU_intInput
  1434.     呼び出し形式
  1435.       n=YGU_intInput(EGB_work,mes,mx,mn,df,x,y,lx,ly,fx,fy);
  1436.         char *EGB_work;   /* EGB用ワークエリア */
  1437.         char *mes;        /* 表示メッセージ */
  1438.         int mx,mn;        /* 入力する値の最大値,最小値 */
  1439.         int df;           /* 入力する値のデフォルト値 */
  1440.         int x,y;          /* 入力ウィンドウの左上座標 */
  1441.         int lx,ly;        /* 入力ウィンドウの大きさ */
  1442.         int fx,fy;        /* フォントの大きさ */
  1443.  
  1444.     戻り値
  1445.         int n;            /* 入力された値 */
  1446.  
  1447.     機能
  1448.       マウスまたはキーボードから整数値を入力します。キーボードから整数値を
  1449.       入力するには、入力ウィンドウ中で数字が表示されている部分をクリックし
  1450.       ます。
  1451.  
  1452.  
  1453.  
  1454.  
  1455. ◆YGU_lineInput
  1456.     呼び出し形式
  1457.       YGU_lineInput(EGB_work,lin,len,x,y,lx,ly,fx,fy);
  1458.         char *EGB_work;   /* EGB用ワークエリア */
  1459.         char *lin;        /* 入力バッファ */
  1460.         int len;          /* 入力文字列の最大長 */
  1461.         int x,y;          /* 入力ウィンドウの左上座標 */
  1462.         int lx,ly;        /* 入力ウィンドウの大きさ */
  1463.         int fx,fy;        /* フォントの大きさ */
  1464.  
  1465.     戻り値
  1466.         char *lin;        /* 入力バッファ */
  1467.  
  1468.     機能
  1469.       キーボードから1行入力します。この関数は、linになんらかの文字列がある
  1470.       場合は、それを変更するようになっているので、全く新たに1行入力する場合
  1471.       でも、lin[0]に0を書いておかなくてはなりません。なお、この関数では漢字
  1472.       の入力はできません。
  1473.  
  1474.  
  1475.  
  1476.  
  1477. ◆YGU_lineInputKanji
  1478.     呼び出し形式
  1479.       YGU_lineInputKanji(EGB_work,lin,len,x,y,lx,ly,fx,fy);
  1480.         char *EGB_work;   /* EGB用ワークエリア */
  1481.         char *lin;        /* 入力バッファ */
  1482.         int len;          /* 入力文字列の最大長 */
  1483.         int x,y;          /* 入力ウィンドウの左上座標 */
  1484.         int lx,ly;        /* 入力ウィンドウの大きさ */
  1485.         int fx,fy;        /* フォントの大きさ */
  1486.  
  1487.     戻り値
  1488.         char *lin;        /* 入力バッファ */
  1489.  
  1490.     機能
  1491.       キーボードから1行入力します。この関数は、linになんらかの文字列がある
  1492.       場合は、それを変更するようになっているので、全く新たに1行入力する場合
  1493.       でも、lin[0]に0を書いておかなくてはなりません。なお、この関数では漢字
  1494.       の入力も可能ですが、拡張ライブラリIが必要です。
  1495.  
  1496.  
  1497.  
  1498.  
  1499. ◆YGU_fileSelect
  1500.     呼び出し形式
  1501.       n=YGU_fileSelect(EGB_work,msg,&drv,path,fn,wld,x,y,lx,ly,fx,fy);
  1502.         char *EGB_work;   /* EGB用ワークエリア */
  1503.         char *msg;        /* 表示メッセージ */
  1504.         unsigned drv;     /* ドライブ番号格納用 */
  1505.         char *path;       /* パス名格納領域 */
  1506.         char *fn;         /* ファイル名格納領域 */
  1507.         char *wld;        /* ワイルドカード */
  1508.         int x,y;          /* 入力ウィンドウの左上座標 */
  1509.         int lx,ly;        /* 入力ウィンドウの大きさ */
  1510.         int fx,fy;        /* フォントの大きさ */
  1511.  
  1512.     戻り値
  1513.         int n;            /* ファイルが入力された→1 されなかった→0 */
  1514.  
  1515.     機能
  1516.    ファイルダイアログを開いて、ファイル名を1個入力します。pathには64文
  1517.       字,fnには12文字分の領域を確保しておく必要があります。また、path,fn,
  1518.       drvは初期化しておかなくてはなりません。もしも、カレントドライブのカ
  1519.       レントディレクトリから探す場合は、fn[0]=0; path[0]=0; drv=0;としてお
  1520.       きます。なお、この関数は現時点では、同じディレクトリに256個以上のフ
  1521.       ァイルがあるとそれ以上のファイルを無視してしまいます。普段からディレ
  1522.       クトリは整理するようにしましょう(^_^;)
  1523.  
  1524.  
  1525.  
  1526.  
  1527. ◆YGU_paraFileSelect
  1528.     呼び出し形式
  1529.       n=YGU_paraFileSelect(EGB_work,msg,mx,&drv,path,fn,b,wl,x,y,lx,ly,fx,fy);
  1530.         char *EGB_work;   /* EGB用ワークエリア */
  1531.         char *msg;        /* 表示メッセージ */
  1532.         int mx;           /* 最大何個のファイルを選ぶか */
  1533.         unsigned drv;     /* ドライブ番号格納用 */
  1534.         char *path;       /* パス名格納領域 */
  1535.         char *fn[];       /* ファイル名へのポインタ */
  1536.         char *b;          /* ファイル名展開バッファ(256×13バイト必要) */
  1537.         char *wl;         /* ワイルドカード */
  1538.         int x,y;          /* 入力ウィンドウの左上座標 */
  1539.         int lx,ly;        /* 入力ウィンドウの大きさ */
  1540.         int fx,fy;        /* フォントの大きさ */
  1541.  
  1542.     戻り値
  1543.         int n;            /* 選ばれたファイル数 */
  1544.  
  1545.     機能
  1546.    ファイルダイアログを開いて、複数のファイルを選択して、選ばれたファイ
  1547.    ル数を返します。ファイル名は、文字配列 fn[0]~fn[n-1] で参照できます。
  1548.    なお、この関数は現時点では、同じディレクトリに256個以上のファイルが
  1549.    あるとそれ以上のファイルを無視してしまいます。普段からディレクトリは
  1550.       整理するようにしましょう(^_^;)
  1551.  
  1552.  
  1553.  
  1554.  
  1555. GUI/拡張GUIライブラリでの考えられるトラブルについて
  1556. ◆スクロールバーがでない
  1557.     縦横のサイズが極端に正方形に近い場合はYGU_addLongitudinalbar  /
  1558.     YGU_addLateralbarはNULLを返す。
  1559.  
  1560. ◆プルダウンメニューが開かない
  1561.     メモリが不足で、プルダウンメニュー表示部に対して十分な画面退避
  1562.     バッファが確保できない場合はプルダウンメニューが開かない。
  1563.  
  1564. ◆FileSelectorが誤動作する/ハングする 
  1565.     pathには64バイト fnには13バイト以上のスペースが必要。drvとpathと
  1566.     fnは呼出し側で初期化しなくてはならない。カレントディレクトリから
  1567.     選択を開始する場合は、path[0]=0; としておく。また、fnの初期状態が
  1568.    "DUMMY.DAT"の場合は、char fn[13]; strcpy(fn,"DUMMY.DAT");を実行
  1569.    しておかなくてはならない。また、カレントドライブから選択を開始
  1570.   する場合は、drv=0;としておく。その他の注意としては、lx,lyが、フォ
  1571.   ントの大きさに対して、あまりにも小さい時は、画面が崩れる可能性が
  1572.   ある。ディレクトリ上に256個以上のファイルがある場合も正常に動作
  1573.   しない。 
  1574.  
  1575.